package com.atguigu.gmall.user.controller;

import brave.http.HttpServerResponse;
import com.atguigu.gmall.common.result.Result;
import com.atguigu.gmall.common.util.IpUtil;
import com.atguigu.gmall.user.service.UserInfoService;
import com.atguigu.gmall.user.vo.LoginParamVo;
import com.atguigu.gmall.user.vo.LoginRespVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @author lfy
 * @Description
 * @create 2023-07-28 9:50
 */
@Slf4j
@RequestMapping("/api/user")
@RestController
public class UserRestController {

    @Autowired
    UserInfoService userInfoService;

    @PostMapping("/passport/login")
    public Result login(@RequestBody @Validated LoginParamVo paramVo,
                        HttpServletRequest request){
        log.info("用户【{}】正在登录",paramVo.getLoginName());
        //处理登录业务
        String ipAddress = IpUtil.getIpAddress(request);
        LoginRespVo vo = userInfoService.login(paramVo,ipAddress);
        //TODO 用户登录以后要做的事情很多，不能都写在这里
        //1）、消息队列：
        //2）、懒加载思想：只有查看购物车的时候，才需要合并
        return Result.ok(vo);
    }


    /**
     * 这是dev分支代码 - 3333
     * 节点数量卡解放路上刊登
     * @param token
     * @return
     */
    @GetMapping("/passport/logout")
    public Result logout(@RequestHeader("token") String token){

        userInfoService.logout(token);

        //只需要给前端返回成功，前端自己删除cookie
        return Result.ok();
    }

}
